/**
 * 
 */
package com.sunwayhorizo.health.business.clinic.emr.document;

import java.util.List;

import javax.ejb.Local;

import com.sunwayhorizo.health.business.dto.ResultsDTO;
import com.sunwayhorizo.health.business.dto.clinic.emr.document.EmrModifyLogDTO;
import com.sunwayhorizo.health.business.dto.clinic.emr.document.EmrWriterDTO;
import com.sunwayhorizo.health.hl7.common.Hl7Exception;
import com.sunwayhorizo.health.hl7.rim.Observation;

/**
 * @ClassName HospitalizedRecordsManagerLocal <br>
 * @PackageName com.sunwayhorizo.health.business.emr.document <br>
 * @Description 电子病历管，入院记录理接口 <br>
 * @Author jinzw <br>
 * @Date 2010-03-06 <br>
 * @Version 1.0 <br>
 * @ModifiedDesc <br>
 * @ModifiedDate <br>
 * @ModifiedBy <br>
 * @Copyright 2010-2020 北京三维海容 All Rights Reserved. <br>
 */
@Local
public interface InpatientRecordsManagerLocal {

	/**
	 * 新建电子病历（入院记录）
	 * @param emr
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO newDocument(EmrWriterDTO emr) throws Hl7Exception;
	
	/**
	 * 删除电子病历（入院记录）
	 * @param emr
	 * @return
	 * @throws Hl7Exception
	 */
	@SuppressWarnings("rawtypes")
	public ResultsDTO delDocument(List ids) throws Hl7Exception;
	
	/**
	 * 电子病历签名（入院记录）
	 * @param emr
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO updateDocument(EmrWriterDTO emr) throws Hl7Exception;
	
	/**
	 * 根据文书类型id查询出具体的病历
	 * 包含二进制数据
	 * @param emrClassId 文书id
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findDocument(String emrClassRoleId) throws Hl7Exception;
	
	
	/**
	 * 根据患者角色ID查询出患者所有已写的病历列表
	 * @param patientID  患者角色ID
	 * @param patientNum  患者住院次数
	 * @return ResultsDTO
	 * @throws Hl7Exception
	 */
	public ResultsDTO findDocumentByPatientId(String patientID,String patientNum) throws Hl7Exception;
	
	/**
	 * 查询患者某一种文书类型下已写的所有病历
	 * @param classCode 文书监控编码
	 * @param patientID 患者id
	 * @param patientNum  患者住院次数
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findClassDocumentByPatient(String classCode,String patientID,String patientNum) throws Hl7Exception;
	
	/**
	 * 根据病历文件id查询出文件内容
	 * @param docId 病历文件动作ID
	 * @return ResultsDTO
	 * @throws Hl7Exception
	 */
	public ResultsDTO findDocumentFile(String docId) throws Hl7Exception ;
	
	/**
	 * 病历修改记录日志
	 * @param emrModifyLogDTO  修改信息
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO updateAudit(EmrModifyLogDTO emrModifyLogDTO) throws Hl7Exception;
	
	/**
	 * 根据患者id拿到患者的主诉，现病史，既往史，个人史等信息
	 * @param patientId 患者角色id
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findInPatientMacroInfoByPatientId(String patientId,String patientNum) throws Hl7Exception;
	
	/**
	 * 判断患者是否有未签名的病历文件
	 * 全部签名返回1有还没有签名的返回0 -1代表该患者没有书写的文书
	 * @param patienId 患者角色id
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findNotSignatureDocByPatientId(String patienId,String patientNum) throws Hl7Exception;
	
	/**
	 * 根据患者拿出所有的诊断
	 * @param patientId 患者id
	 * @return
	 * @throws Hl7Exception
	 */
	public ResultsDTO findDiagnosisListByPatientId(String patientId,String patientNum) throws Hl7Exception;
	
}
